package danling

import (
	"encoding/base64"
	"encoding/json"
	"gitee.com/thingple/detonator/rest"
	"github.com/lishimeng/go-log"
)

type QbrzxxProjectInfo struct {
	UnitCode              string    `json:"unitCode,omitempty"`              // 单位代码
	ContractNo            string    `json:"contractNo,omitempty"`            // 合同编号
	EquipmentCode         string    `json:"equipmentCode,omitempty"`         // 设备编号
	ControllerCode        string    `json:"controllerCode,omitempty"`        // 起爆器编号
	IdentityCard          string    `json:"identityCard,omitempty"`          // 爆破员身份证号
	Latitude              string    `json:"latitude,omitempty"`              // 纬度
	Longitude             string    `json:"longitude,omitempty"`             // 经度
	ExplosionDate         string    `json:"explosionDate,omitempty"`         // 爆破时间
	Conclusion            Qualified `json:"conclusion,omitempty"`            // 结论
	DetonatorCount        string    `json:"detonatorCount,omitempty"`        // 雷管数
	ProjectNo             string    `json:"projectNo,omitempty"`             // 项目编号
	FactoryId             string    `json:"factoryId,omitempty"`             // 管厂id
	SoftVersion           string    `json:"softVersion,omitempty"`           // 软件版本
	EquipmentType         string    `json:"equipmentType,omitempty"`         // 设备型号
	ControllerCodeType    string    `json:"controllerCodeType,omitempty"`    // 起爆器类型
	ControllerCodeVersion string    `json:"controllerCodeVersion,omitempty"` // 起爆器版本

	DetonatorList          []DetonatorInfo      `json:"detonatorList,omitempty"`          // 雷管信息
	VoltageElectricityList []VoltageElectricity `json:"voltageElectricityList,omitempty"` // 电流电压信息
}

type DetonatorInfo struct {
	Delay         string    `json:"delay,omitempty"`         // 延迟
	DetonatorCode string    `json:"detonatorCode,omitempty"` // UID
	ShellCode     string    `json:"shellCode,omitempty"`     // 管壳码
	HoleNo        string    `json:"holeNo,omitempty"`        // 孔号
	DetResult     Qualified `json:"detResult,omitempty"`     // 结果
}
type VoltageElectricity struct {
	CheckTime   string      `json:"checkTime,omitempty"`   // 检测时间
	CheckType   QbCheckType `json:"checkType,omitempty"`   // 检测方式 0:低压 1:高压
	Voltage     string      `json:"voltage,omitempty"`     // 电压
	Electricity string      `json:"electricity,omitempty"` // 电流
	Seq         string      `json:"seq,omitempty"`         // 倒计时 2 (0-50)
}

func (c *client) UploadQbrz(projects ...QbrzxxProjectInfo) (code int, err error) {
	req := Req{}
	req.Xpch = c.xpch

	for _, project := range projects {
		req.Projects = append(req.Projects, project)
	}

	var resp Resp

	bs, err := json.Marshal(req)
	if err != nil {
		return
	}
	log.Info("req:%s", bs)
	reqBs, err := encode(bs, c.desKey)
	if err != nil {
		return
	}
	reqContent := base64.StdEncoding.EncodeToString(reqBs)
	log.Info("req:%s", reqContent)
	params := make(map[string]string)
	params["param"] = reqContent
	code, err = rest.NewRest(c.host).Path("qbrzServlet", "addQbrzxx").ResponseJson(&resp).FormUrl(params)
	if err != nil {
		return
	}
	return
}
